package com.ygqh.baby.service.linkstars;

import java.util.Date;
import java.util.List;

import com.ygqh.baby.ao.OrderStatus;
import com.ygqh.baby.po.YgOrder;
import com.ygqh.baby.service.linkstars.model.LSResult;

public interface YgLinkStarsService {

	/**
	 * 3. 订单信息推送接口（别名：Order Push 接口） 本接口由 LinkStars
	 * 联盟实现，用途是接受订单相关信息。用户下单（不论是否支付/发货/签收）后，请广 告主尽快主动调用本接口将订单相关信息推送给联盟。
	 * 广告主可以随时再次调用本接口以修改订单信息，包括“订单确认状态（order_status）”。广告主也可以调 用 “订单状态推送接口（Effect
	 * Push 接口）”来设定其“确认状态”。关于“订单状态推送接口（Effect Push 接 口）”请参阅其具体说明。
	 * 
	 * @param order
	 *            M站订单（含明细）
	 * @return
	 */
	LSResult orderPush(YgOrder order);

	/**
	 * 订单状态推送接口 订单状态有如下几种： 待定（0）：近期下单的订单，无论是否已付款、是否已发货，但尚未妥投的订单。这个状态代表佣金是否
	 * 支付是未明确的。 订单已支付（2）：用户已经全部支付了货款。
	 * 有效（1）：全部商品已妥投且无退货之虞；或部分商品在妥投之后被退货，尚有未退货的商品，且再无退 货之虞。这意味着佣金将被支付。
	 * 无效（-1）：订单被取消、拒绝、非法的情况，或全部商品均拒收或退货。这意味着佣金不会被支付。
	 * 订单状态发送变化时，请商家主动调用本接口将订单新状态推送给联盟。（请先调用 Order Push 接口推送 订单信息，再调用本接口。）
	 * 如果发生部分退货，请先调用 Order Push 接口修改订单信息（移除退货的商品），再调用本接口确认订单有 效（1）。或者直接在调用 Order
	 * Push 接口时附带参数 order_status = 1，从而避免调用本接口。
	 * 
	 * @param order
	 * @return
	 */
	LSResult effectPush(List<YgOrder> orderList);

	/**
	 * 按时间区间查询LinkStars 的订单
	 * 
	 * @param startTime
	 * @param endTime
	 * @param orderStatus
	 * @param sign
	 *            订单标记
	 * @return
	 */
	List<YgOrder> getLSOrderByTime(Date startTime, Date endTime, OrderStatus orderStatus, String sign);
}
